// 版权归 瞄你个汪 所有。使用本代码应遵守相关法律法规和Apache 2.0开源许可要求。
package top.geeke.toolkit.supertable.annotation;

import org.apache.ibatis.type.JdbcType;
import top.geeke.toolkit.supertable.core.SuperColumnValidator;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

/**
 * 表字段属性注解
 * @author 瞄你个汪
 * @since 2024-05-01 12:00:00
 */
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = SuperColumnValidator.class)
public @interface SuperColumn {
    /**
     * 字段注释
     */
    String value();

    /**
     * 字段类型
     */
    JdbcType columType() default JdbcType.UNDEFINED;;

    /**
     * 字段长度
     */
    int length() default 256;

    /**
     * 小数点位数
     */
    int numericScale() default 2;

    /**
     * 字段默认值
     */
    String defaultValue() default "";

    /**
     * 字段可空
     */
    boolean nullable() default false;

    /**
     * 其他配置
     */
    String extra() default "";

    // 下面是字段校验默认参数
    String message() default "";
    Class<?>[] groups() default { };
    Class<? extends Payload>[] payload() default {};
}
